
use base64;
use std::fs::File;
use std::io::ErrorKind;
use std::io::Read;
use std::io::Result;

/**
 * 编码文件为base64字符串
 */
pub fn encode_file(file_path: &String)->Option<String> {
     //函数用于以只读模式打开一个已经存在的文件，如果文件不存在，则会抛出一个错误。如果文件不可读，那么也会抛出一个错误
     let r: Result<File> = File::open(file_path);
     match r {
         Ok(mut f) => {
             let mut buf = vec![0_u8; 0];
              //预先分配好内存，效率更高
             buf.reserve(10240);
             if let Ok(s) = f.read_to_end(&mut buf) {
                println!("文件大小:{}", s);
                return Some(base64::encode(buf));
             }
        },
        Err(e) =>{
                match e.kind() {
                    ErrorKind::NotFound => {
                        println!("文件不存在");
                        return None;
                    },
                    _ =>{
                        panic!("{}", e);
                    }
                }
        }
    }
    return None;
        
}